<?php

/**
 * imagesx($im) 可以获取图片的宽度  imagesy($im) 可以获取图片的高度
 *
 * 图像背景管理，可以将本地图片添加为背景使用
 */

function creatimgstr($imgname, $string, $my_type) {
    list($width, $height, $type) = getimagesize($imgname);
    $types = array(1=>"gif", 2=>"jpeg", 3=>"png");
    // 变量函数
    $createimage = "imagecreatefrom".$types[$type];

    $img = $createimage($imgname);


    $color = imagecolorallocate($img, 0xFF, 0, 0);

    $x = ($width - imagefontwidth(5)*strlen($string))/2;
    $y = ($height - imagefontheight(5))/2;

    imagestring($img, 5, $x, $y, $string, $color);
    // 变量函数
    // $save = "image".$types[$type];
    // 可以另存为自定义格式
    $my_name = explode(".", $imgname);
    $save = "image".$my_type;
    $save($img, "new_".$my_name[0].".".$my_type);
    imagedestroy($img);
}

// creatimgstr("1.jpg", "Hello World", "gif");


/*
$im = imagecreatefromjpeg("1.jpg");

$color = imagecolorallocate($im, 0, 255, 0);
// 添加矩形
// imagefilledrectangle($im, 0, 0, imagesx($im), imagesy($im), $color);
//
// 添加对角线
imageline($im, 0, 0, imagesx($im), imagesy($im), $color);
imagepng($im, "test.png");

imagedestroy($im);
*/

// 剪切图片
function cutimg($imgname, $x, $y, $width, $height) {
    list($src_width, $src_height, $type) = getimagesize($imgname);
    $types = array(1=>"gif", 2=>"jpeg", 3=>"png");
    // 变量函数
    $createimage = "imagecreatefrom".$types[$type];
    // 原图片
    $src_img = $createimage($imgname);
    // 目标图片
    $img_target = imagecreatetruecolor($width, $height);
    // 剪切图片
    imagecopyresampled($img_target, $src_img, 0, 0, $x, $y, $width, $height, $width, $height);

    // 缩放图片
    // imagecopyresampled($img_target, $src_img, 0, 0, 0, 0, $width, $height, $src_width, $src_height);
    // 变量函数
    $save = "image".$types[$type];
    // 可以另存为自定义格式
    // $my_name = explode(".", $imgname);
    // $save = "image".$my_type;
    $save($img_target, "new_".$imgname);
    // $save($img, "new_".$my_name[0].".".$my_type);
    imagedestroy($img_target);
    imagedestroy($src_img);
}

// cutimg("1.jpg", 50, 50, 100, 100);


// 缩放图片
function thumb($imgname, $width, $height) {
    list($src_width, $src_height, $type) = getimagesize($imgname);
    $types = array(1=>"gif", 2=>"jpeg", 3=>"png");
    // 变量函数
    $createimage = "imagecreatefrom".$types[$type];
    // 原图片
    $img = $createimage($imgname);
    // 目标图片
    $img_target = imagecreatetruecolor($width, $height);
    // 缩放图片
    imagecopyresampled($img_target, $img, 0, 0, 0, 0, $width, $height, $src_width, $src_height);
    // 变量函数
    $save = "image".$types[$type];
    // 可以另存为自定义格式
    // $my_name = explode(".", $imgname);
    // $save = "image".$my_type;
    $save($img_target, "new_".$imgname);
    // $save($img, "new_".$my_name[0].".".$my_type);
    imagedestroy($img_target);
    imagedestroy($img);
}

// thumb("1.jpg", 100, 100);


// 按比例缩放图片
function thumb_lock($imgname, $width, $height) {
    list($src_width, $src_height, $type) = getimagesize($imgname);
    $types = array(1=>"gif", 2=>"jpeg", 3=>"png");
    // 变量函数
    $createimage = "imagecreatefrom".$types[$type];
    // 原图片
    $src_img = $createimage($imgname);
    // 目标图片
    $img_target = imagecreatetruecolor($width, $height);
    // 按比例获取尺寸
    $src_ratio = $src_width/$src_height;
    if ($width/$height > $src_ratio) {
       $width = $height*$src_ratio;
    } else {
       $height = $width/$src_ratio;
    }
    // 缩放图片
    imagecopyresampled($img_target, $src_img, 0, 0, 0, 0, $width, $height, $src_width, $src_height);
    // 变量函数
    $save = "image".$types[$type];
    // 可以另存为自定义格式
    // $my_name = explode(".", $imgname);
    // $save = "image".$my_type;
    $save($img_target, "new_".$imgname);
    // $save($img, "new_".$my_name[0].".".$my_type);
    imagedestroy($img_target);
    imagedestroy($src_img);
}

// thumb_lock("1.jpg", 100, 100);
//
//
// 

// 添加文字水印
function watermark_str($imgname, $string) {
    list($src_width, $src_height, $type) = getimagesize($imgname);
    $types = array(1=>"gif", 2=>"jpeg", 3=>"png");
    // 变量函数
    $createimage = "imagecreatefrom".$types[$type];
    // 原图片
    $src_img = $createimage($imgname);

    $bgcolor = imagecolorallocate($src_img, 255, 255, 255);
    $fontcolor = imagecolorallocate($src_img, 33, 33, 33);
    // 添加水印
    $x = rand(3, $src_width-strlen($string)*imagefontwidth(5));
    $y = rand(3, $src_height-imagefontheight(5)-2);

    imagestring($src_img, 5, $x, $y, $string, $bgcolor);
    imagestring($src_img, 5, $x+1, $y+1, $string, $fontcolor);

    // 变量函数
    $save = "image".$types[$type];
    // 可以另存为自定义格式
    // $my_name = explode(".", $imgname);
    // $save = "image".$my_type;
    $save($src_img, "new_".$imgname);
    // $save($img, "new_".$my_name[0].".".$my_type);
    imagedestroy($src_img);
}

// watermark_str("1.jpg", "Hello World");

// 添加图片水印
function watermark($imgname, $watername) {
    list($src_width, $src_height, $src_type) = getimagesize($imgname);
    list($water_width, $water_height, $water_type) = getimagesize($watername);
    $types = array(1=>"gif", 2=>"jpeg", 3=>"png");
    // 变量函数
    $src_createimage = "imagecreatefrom".$types[$src_type];
    $water_createimage = "imagecreatefrom".$types[$water_type];
    // 原图片
    $src_img = $src_createimage($imgname);
    // 水印图片
    $water_img = $water_createimage($watername);


    // 添加水印
    $x = rand(3, $src_width-$water_width);
    $y = rand(3, $src_height-$water_height);

    imagecopy($src_img, $water_img, $x, $y, 0, 0, $water_width, $water_height);

    // 变量函数
    $save = "image".$types[$src_type];
    // 可以另存为自定义格式
    // $my_name = explode(".", $imgname);
    // $save = "image".$my_type;
    $save($src_img, "new_".$imgname);
    // $save($img, "new_".$my_name[0].".".$my_type);
    imagedestroy($src_img);
    imagedestroy($water_img);
}

// watermark("1.jpg", "logo.gif");






// 图片的翻转与旋转
function rotateImg($imgname, $deg) {
    list($width, $height, $type) = getimagesize($imgname);
    $types = array(1=>"gif", 2=>"jpeg", 3=>"png");
    // 变量函数
    $createimage = "imagecreatefrom".$types[$type];
    // 原图片
    $img = $createimage($imgname);

    // 旋转图片
    $img_finished = imagerotate($img, $deg, 0);

    // 变量函数
    $save = "image".$types[$type];
    // 可以另存为自定义格式
    // $my_name = explode(".", $imgname);
    // $save = "image".$my_type;
    $save($img_finished, "new_".$imgname);
    // $save($img, "new_".$my_name[0].".".$my_type);
    imagedestroy($img);
    imagedestroy($img_finished);
}

function turnImg($imgname, $dirction) {
    list($width, $height, $type) = getimagesize($imgname);
    $types = array(1=>"gif", 2=>"jpeg", 3=>"png");
    // 变量函数
    $createimage = "imagecreatefrom".$types[$type];
    // 原图片
    $img = $createimage($imgname);
    if($dirction == "y") {
        // 按y轴翻转图片
        $img_finished = imagecreatetruecolor($width, $height);
        // 循环 每次拷贝一个像素
        for($x=0; $x<$width; $x++) {
            imagecopy($img_finished, $img, $width-$x-1, 0, $x, 0, 1, $width);
        }
    } else if ($dirction == "x") {
        // 按x轴翻转图片
        $img_finished = imagecreatetruecolor($width, $height);
        // 循环 每次拷贝一个像素
        for($y=0; $y<$height; $y++) {
            imagecopy($img_finished, $img, 0, $height-$y-1, 0, $y, $width, 1);
        }
    }

    // 变量函数
    $save = "image".$types[$type];
    // 可以另存为自定义格式
    // $my_name = explode(".", $imgname);
    // $save = "image".$my_type;
    $save($img_finished, "new_".$imgname);
    // $save($img, "new_".$my_name[0].".".$my_type);
    imagedestroy($img);
    imagedestroy($img_finished);
}

// rotateImg("1.jpg", 45);
// turnImg("1.jpg", "x");
// turnImg("1.jpg", "y");
 ?>
